package com.zeratul.web.validate.handler;

import cn.hutool.core.util.ObjectUtil;
import com.zeratul.common.core.utils.spring.SpelUtils;
import com.zeratul.web.validate.annotation.ZtValid;
import org.springframework.stereotype.Component;

/**
 * 基于spel表达式的参数校验处理器
 */
@Component
public class ZtSpelValidateHandler extends ZtValidateHandler{

    /**
     * 校验执行方法，具体的逻辑取决于子类实现
     *
     * @param val
     * @param ztValid
     * @return
     */
    @Override
    public boolean doValid(Object val, ZtValid ztValid) {
        //获取spel表达式
        String spel = ztValid.spel();
        if (ObjectUtil.isEmpty(spel)) {
            return super.doValid(val, ztValid);
        }
        //解析spel表达式进行校验
        return SpelUtils.parseExpression(spel, val, null, Boolean.class, true);
    }
}
